package com.mall.order.server.controller;

import com.mall.common.core.domain.Result;
import com.mall.order.common.dto.OrderRequest;
import com.mall.order.server.service.OrderService;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/order")
public class OrderController {
    private final OrderService orderService;

    public OrderController(OrderService orderService) {
        this.orderService = orderService;
    }

    /**
     * 异步下单：
     * 校验通过mq异步下单
     * 线程池，异步编排处理下单
     * 前台轮询查询下单结果
     * User->>API: 提交订单请求
     * API->>API: 同步校验（库存、用户状态、参数合法性等）
     * API-->>User: 返回"处理中"状态
     * API->>MQ: 发送校验通过的订单消息
     * MQ->>Consumer: 推送消息
     * Consumer->>Consumer: 异步处理（扣减库存、生成订单、支付等）
     * Consumer->>DB: 持久化订单数据
     * Consumer-->>User: 异步通知结果
     */
    @PostMapping("/planOrder")
    public Result planOrder(@RequestBody OrderRequest omsOrder) {
        return orderService.planOrder(omsOrder);
    }

    /**
     *
     * @param orderSn
     * @return
     */
    @GetMapping("/PollingFindRedis/{orderSn}")
    public Result PollingFindRedis(@PathVariable String orderSn){
        return orderService.PollingFindRedis(orderSn);
    }

}
